﻿/*
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * 
*     ___                              __                 _       __              __     __       *
*    /   |   _____ ____   ___   _____ /_/____   ____     | |     / /____   _____ / /____/ /_____  *
*   / /| |  / ___// __ \ / _ \ / ___// // __ \ / __ \    | | /| / // __ \ / ___// // __  // ___/  *
*  / ___ | _\_ \ / /_/ //  __// /   / // /_/ // / / /    | |/ |/ // /_/ // /   / // /_/ /_\_ \    *
* /_/  |_|/____// ____/ \___//_/   /_/ \____//_/ /_/     |__/|__/ \____//_/   /_/ \____//____/    *
*              /_/                                                                                *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*/

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Worlds.Application
{
    /// <summary>
    /// Event Handlers class, simply used to group event handlers the engien uses together.
    /// </summary>
    public static class EventHandlers
    {
        /// <summary>
        /// Default event handler, does not use paramaters.
        /// </summary>
        public delegate void EventHandler();

        /// <summary>
        /// Configuration event handler, used to allow plugins to access configuration data.
        /// </summary>
        /// <param name="Value">The value to access.</param>
        public delegate void ConfigurationStringHandler(ref String Value);
        /// <summary>
        /// Configuration event handler, used to allow plugins to access configuration data.
        /// </summary>
        /// <param name="Value">The value to access.</param>
        public delegate void ConfigurationByteHandler(ref Byte Value);
        /// <summary>
        /// Configuration event handler, used to allow plugins to access configuration data.
        /// </summary>
        /// <param name="Value">The value to access.</param>
        public delegate void ConfigurationInt16Handler(ref Int16 Value);
        /// <summary>
        /// Configuration event handler, used to allow plugins to access configuration data.
        /// </summary>
        /// <param name="Value">The value to access.</param>
        public delegate void ConfigurationInt32Handler(ref Int32 Value);
        /// <summary>
        /// Configuration event handler, used to allow plugins to access configuration data.
        /// </summary>
        /// <param name="Value">The value to access.</param>
        public delegate void ConfigurationInt64Handler(ref Int64 Value);
        /// <summary>
        /// Configuration event handler, used to allow plugins to access configuration data.
        /// </summary>
        /// <param name="Value">The value to access.</param>
        public delegate void ConfigurationSByteHandler(ref SByte Value);
        /// <summary>
        /// Configuration event handler, used to allow plugins to access configuration data.
        /// </summary>
        /// <param name="Value">The value to access.</param>
        public delegate void ConfigurationUInt16Handler(ref UInt16 Value);
        /// <summary>
        /// Configuration event handler, used to allow plugins to access configuration data.
        /// </summary>
        /// <param name="Value">The value to access.</param>
        public delegate void ConfigurationUInt32Handler(ref UInt32 Value);
        /// <summary>
        /// Configuration event handler, used to allow plugins to access configuration data.
        /// </summary>
        /// <param name="Value">The value to access.</param>
        public delegate void ConfigurationUInt64Handler(ref UInt64 Value);

    }
}
